Computers have become highly integrated in the workforce, in the home, in mobile devices, and many other places. Computers can process massive amounts of information quickly and efficiently. Software applications designed to run on computer systems allow users to perform a wide variety of functions including business applications, schoolwork, entertainment and more. Software applications are often designed to perform specific tasks, such as word processor applications for drafting documents, or email programs for sending, receiving and organizing email.
In many cases, software applications are designed to interact with other software applications or other computer systems. For example, a web browsing application running on one computer system may be designed to communicate with a web server running on another computer system. The web server, in turn, may be designed to communicate with a database server configured to store and retrieve information. The information from the database may then be communicated back to the web browser via the web server.
Database servers are typically designed to access data quickly and reliably. Furthermore, database servers are often designed to accommodate multiple simultaneous users. In such cases, multiple users may request access to the same data file at the same time. Those users may make changes to files that are being accessed concurrently by others. Those changes may include creation, replacement, updating, deleting (CRUD) or other changes. In such cases, the order in which data file updates are applied becomes increasingly important.